import os
import yaml


def load_config(config_file):
    """加载YAML配置文件"""
    try:
        with open(config_file, 'r', encoding='utf-8') as f:
            return yaml.safe_load(f)
    except FileNotFoundError:
        print(f"错误：配置文件 '{config_file}' 未找到")
        return None
    except yaml.YAMLError as e:
        print(f"错误：解析配置文件时出错 - {e}")
        return None


def get_files_by_config(config):
    """根据配置信息获取符合条件的文件列表（不含扩展名）"""
    if not config:
        return []

    # 获取配置信息，设置默认值
    directory = config.get('directory', '.')
    extensions = config.get('extensions', [])

    # 验证目录是否存在
    if not os.path.isdir(directory):
        print(f"错误：目录 '{directory}' 不存在或不是一个有效的目录")
        return []

    # 处理扩展名列表，确保都不带点且转为小写
    processed_extensions = []
    for ext in extensions:
        if ext.startswith('.'):
            processed_extensions.append(ext[1:].lower())
        else:
            processed_extensions.append(ext.lower())

    # 获取目录下的所有文件和目录
    all_items = os.listdir(directory)

    # 筛选出文件且后缀名符合要求的
    result = []
    for item in all_items:
        item_path = os.path.join(directory, item)
        # 检查是否是文件
        if os.path.isfile(item_path):
            # 分离文件名和扩展名
            filename, file_ext = os.path.splitext(item)
            # 检查扩展名是否匹配列表中的任何一个（忽略大小写）
            if file_ext[1:].lower() in processed_extensions:
                result.append(filename)

    return result, directory, extensions


if __name__ == "__main__":
    # 加载配置文件
    config = load_config('list_multiple_extensions.yml')

    # 获取符合条件的文件列表
    files, directory, extensions = get_files_by_config(config)

    # 输出结果
    if files:
        print(f"目录 '{directory}' 下所有'.{extensions}'文件（不含扩展名）：")
        for file in files:
            print(file)
    else:
        print(f"在目录 '{directory}' 中未找到任何'.{extensions}'文件")
